/***************************************************************************
 * 文件名：ICallingForm
 * 功能：
 * 说明： 
 * -------------------------------------------------------------------------
 * 创建时间：2025/7/11 17:21:10
 * 创建人：葛浩
 * 邮箱： 2094733071@qq.com
 * =========================================================================
 *
 * 修改人：   
 * 修改时间：   
 * 修改说明：   
 ***************************************************************************/
using System;
using System.Windows.Forms;

using Application = System.Windows.Forms.Application;

namespace RunMethodLibrary
{
	public class MainFormOption
	{
		/// <summary>
		/// 查找窗体
		/// </summary>
		/// <typeparam name="T"></typeparam>
		/// <param name="formName"></param>
		/// <returns></returns>
		public static bool IsFormOpen<T>() where T : Form, new()
		{
			foreach (Form form in Application.OpenForms)
			{
				if (form.GetType().FullName.Equals(typeof(T).FullName) && form.Visible) // 或者使用 form.Text == formName 来匹配标题而不是名称
				{
					return true;
				}
			}
			return false;
		}

		/// <summary>
		/// 前置窗体
		/// </summary>
		public static void BringToFront<T>()
		{
			// 尝试找到已经存在的窗体实例，并将其前置到前台
			foreach (Form form in Application.OpenForms)
			{
				if (form is T) // 确保是我们要前置的窗体类型
				{
					form.WindowState = FormWindowState.Normal; // 确保窗体不是最小化状态
					form.Activate(); // 将窗体置于前台
					form.BringToFront(); // 将窗体置于最前面
					break;
				}
			}
		}

		/// <summary>
		/// 查找窗体并将其前置
		/// </summary>
		/// <param name="formType"></param>
		/// <returns></returns>
		public static bool Search2BringToFront(Type formType)
		{
			foreach (Form form in Application.OpenForms)
			{
				if (form.GetType().FullName.Equals(formType.FullName) && form.Visible) // 或者使用 form.Text == formName 来匹配标题而不是名称
				{
					form.WindowState = FormWindowState.Normal; // 确保窗体不是最小化状态
					form.Activate(); // 将窗体置于前台
					form.BringToFront(); // 将窗体置于最前面
					return true;
				}
			}
			return false;
		}
	}
}
